package com.intelligent.service;

import com.intelligent.pojo.BomInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;

/**
* @author lenovo
* @description 针对表【bom_info(BOM信息表)】的数据库操作Service
* @createDate 2025-08-28 09:01:55
*/
public interface BomInfoService extends IService<BomInfo> {

    /**
     * 根据ID查询BOM信息（关联产品信息和单位信息）
     *
     * @param bomId BOM ID
     * @return BOM信息
     */
    BomInfo getBomInfoById(Long bomId);

    /**
     * 分页查询BOM信息（关联产品信息和单位信息）
     *
     * @param page 分页参数
     * @param bomCode BOM编码模糊查询（可选）
     * @param bomName BOM名称模糊查询（可选）
     * @param productCode 产品编码模糊查询（可选）
     * @param productName 产品名称模糊查询（可选）
     * @param status 状态精确查询（可选）
     * @return 分页结果
     */
    IPage<BomInfo> pageBomInfo(Page<BomInfo> page, String bomCode, String bomName,
                               String productCode, String productName, Integer status);


    /**
     * 导出BOM信息列表为Excel（关联产品信息和单位信息）
     *
     * @param bomCode BOM编码模糊查询（可选）
     * @param bomName BOM名称模糊查询（可选）
     * @param productCode 产品编码模糊查询（可选）
     * @param productName 产品名称模糊查询（可选）
     * @param status 状态精确查询（可选）
     * @return BOM信息列表
     */
    List<BomInfo> exportBomInfoToExcel(String bomCode, String bomName,
                                       String productCode, String productName, Integer status);

    /**
     * 新增BOM信息（自动生成BOM编号）
     *
     * @param bomInfo BOM信息实体
     * @return 是否新增成功
     */
    boolean addBomInfo(BomInfo bomInfo);

    /**
     * 更新BOM信息
     *
     * @param bomInfo BOM信息实体
     * @return 是否更新成功
     */
    boolean updateBomInfo(BomInfo bomInfo);

    /**
     * 根据BOM ID删除BOM信息
     *
     * @param bomId BOM ID
     * @return 是否删除成功
     */
    boolean deleteBomInfo(Long bomId);
}
